Stream processing is a computer programming paradigm concerned with the processing of data, i.e. input data, that enters the processing system in the form of data streams being potentially unbounded in length. A stream processing system enables a user to perform computations on data that is arriving steadily and to output results continuously. In order to ensure a certain level of fault-tolerance and scalability, stream processing systems are typically distributed systems, where the individual processing elements are scattered over multiple interconnected computers.
While such systems achieve the desired fault-tolerance and scalability, there is no secure support for multiple concurrent users. That is, current stream processing frameworks, such as Storm or S4, do not contain special mechanisms to keep the messages associated with different owners separate and confidential. As a result, if multiple data owners used the same processing infrastructure, then information could leak between streams, which could lead to a breach of confidentiality. Currently, this problem is resolved by limiting the application to a single data stream owning entity.